<?php
class GruposController extends AppController {

	var $name = 'Grupos';
	var $helpers 	= array('Javascript','Ajax'); 
	var $components = array('RequestHandler');
	var $uses = array("User","Grupo","Iglesia","Tipogrupo","Rol","Tiporol","Config","Oficio","Comuna","Sector");

	function loadFormGrid(){
		$response = array(
			"response"=>array(
				"error"=>false,
				"errorThread"=>"",
				"errorTitle"=>"",
				"showErrorThread"=>false,
				"type"=>"view", 
				"data"=>$this->render("afx/grid"),
				"title"=>"Grupos"
			)
		);
		//$varx = count(variable);
		$this->outJson($response);
	}
	function loadGrid(){
		$this->autoRender = false;
		if(!empty($_POST['page']))
			$page = $_POST['page'];
		else	$page = 1;

		if(!empty($_POST['rp']))
			$rp = $_POST['rp'];
		else	$rp = 10;
		$likecondicion = "";
		$start = (($page-1) * $rp);
		$limit = $start. ", ". $rp;

		$buscarFinalizados = false;
		if(!empty($_POST['qtype']) && $_POST['qtype'] == "finalizado"):
			$buscarFinalizados = true;
			$likecondicion = " grupo.fecha_inicio != '0000-00-00 00:00:00' AND grupo.fecha_termino != '0000-00-00 00:00:00' ";
		endif;
		
		if(!empty($_POST['sortname'])):
			$sortname = $_POST['sortname'];
			$sortorder = " " . $_POST['sortorder'];
		else:
			$sortname = 'grupo.nombre';
			$sortorder = " desc ";
		endif;
		
		
		if(!empty($_POST['query'])):
			$query = $_POST['query'];
			$qtype = $_POST['qtype'];
			$likecondicion = "{$qtype} LIKE '%{$query}%'";
		else:	
			$query = null;
			$qtype = "created";
		endif;	
		
		if(!empty($_POST['qtype']) && $_POST['qtype'] == "inactivos"):
			$inactivos = true;
			$likecondicion = " grupo.activo = 'N' ";
		else:
			if(!empty($likecondicion)):
				$likecondicion = 	$likecondicion." AND grupo.activo = 'S' ";
			else:
				$likecondicion = 	" grupo.activo = 'S' ";
			endif;	
		endif;
		
		$orden = $sortname . $sortorder;
		$id = 0;
		$elements="";
		$count = $this->Grupo->getCountGrid($likecondicion);
		$grupos= $this->Grupo->getGruposGrid($orden,$limit,$likecondicion);
		$data = array();	
		if(!empty($grupos)):
			foreach($grupos as $g):
				$nMiembros = 0;
				$nMiembros = $this->Rol->find('count',array(
							'conditions'=>array(
								"Rol.grupo_id"=>$g["grupo"]["id"]
							),
							'recursive' => -1
						)
				);
				$mostrarSegunFecha = true;
				$fi = $g["grupo"]["fecha_inicio"];
				$ff = $g["grupo"]["fecha_termino"];
				$hoy = strtotime(date("Y-m-d"));
				$fin = strtotime($ff);
				
				if(!$buscarFinalizados):
					if($g["grupo"]["fecha_inicio"] === "0000-00-00 00:00:00"):
						$fi = "-";
						$ff = "-";
					else:
						if ($fin >= $hoy):
						    $mostrarSegunFecha = true;
						else:
							$mostrarSegunFecha = false;
						endif;
					endif;
				else:
					if($g["grupo"]["fecha_inicio"] !== "0000-00-00 00:00:00"):
						if ($fin < $hoy):
						    $mostrarSegunFecha = true;
						else:
							$mostrarSegunFecha = false;
						endif;
					else:
						$mostrarSegunFecha = false;	
					endif;	
				endif;		
				if($mostrarSegunFecha):
					$elements[] = array(
						"id"	=>	$g["grupo"]["id"],
						"cell"	=>	array(
								$g["grupo"]["id"],
								$g["tipogrupo"]["nombre"],
								$g["grupo"]["nombre"],
								$nMiembros,
								$g["grupo"]["direccion"],
								$g["grupo"]["dia_reunion"],
								$g["grupo"]["hora_reunion"],
								$fi,
								$ff,
								$g["iglesia"]["nombre"],
								$g["grupo"]["created"],
								$g["grupo"]["modified"]
							)
						);
				endif;		
			endforeach;
			$data = array('page'	=>	$page,'total'	=>	$count,'rows'	=>	$elements);			
		else:
			$data =array('page'	=>	$page,
						'total'	=>	'0',
						'rows'	=>	array(
									"id"	=>	'0',
									"cell"	=>	array('-','-','-','-','-')
								)
					);		
		endif;
		$this->outJson($data);
	}
	function loadFormNuevoGrupo(){
		$tipos = $this->Tipogrupo->find('all',array(
						'fields' => array('Tipogrupo.id','Tipogrupo.nombre'),
						'recursive' => -1
					)
		);
		$iglesias = $this->Iglesia->find('all',array(
						'fields' => array('Iglesia.id','Iglesia.nombre'),
						'recursive' => -1
					)
		);
		$comunas = $this->Comuna->find('all',array(
						'fields' => array('Comuna.nombre','Comuna.id'),
						'order'=>"Comuna.nombre ASC",
						'recursive' => -1
					)
		);
		//cargamos inicialmente los sectores de Valdivia
		$sectores = $this->Sector->find('all',array(
						'conditions'=>array(
							"Sector.comuna_id"=>"14101"
						),
						'fields' => array('Sector.nombre','Sector.id'),
						'recursive' => -1
					)
		);
		$this->set("tipos",$tipos);
		$this->set("iglesias",$iglesias);
		$this->set("comunas",$comunas);
		$this->set("sectores",$sectores);
		$html = $this->render("afx/nuevo");
		$response = array(
			"response"=>array(
				"error"=>false,
				"errorThread"=>"",
				"errorTitle"=>"",
				"showErrorThread"=>false,
				"type"=>"view", 
				"data"=>$html,
				"title"=>"Nuevo Grupo"
			)
		);
		$this->outJson($response);
	}
	function loadEditForm(){
		$error = true;
		$html = "";
		$title = "Error en la operación";
		$mensaje = "No se puede editar el grupo, verifique los datos.";
		if(!empty($_POST["id"]) && intval($_POST["id"])>0):
			$id = $_POST["id"];
			$grupo = $this->Grupo->find('first',array(
							'conditions'=>array(
								"Grupo.id"=>$id
							),
							'recursive' => -1
						)
			);
			if(!empty($grupo)):
				$sectorGrupo =  $this->Sector->find('first',array(
								'conditions'=>array(
									"Sector.id"=>$grupo["Grupo"]["sector_id"]
								),
								'recursive' => -1
							)
				);
				$comunaGrupo =  $this->Comuna->find('first',array(
								'conditions'=>array(
									"Comuna.id"=>$sectorGrupo["Sector"]["comuna_id"]
								),
								'recursive' => -1
							)
				);
				$tipos = $this->Tipogrupo->find('all',array(
								'fields' => array('Tipogrupo.id','Tipogrupo.nombre'),
								'recursive' => -1
							)
				);
				
				$iglesias = $this->Iglesia->find('all',array(
								'fields' => array('Iglesia.id','Iglesia.nombre'),
								'recursive' => -1
							)
				);
				$comunas = $this->Comuna->find('all',array(
								'fields' => array('Comuna.nombre','Comuna.id'),
								'order'=>"Comuna.nombre ASC",
								'recursive' => -1
							)
				);
				$sectores = $this->Sector->find('all',array(
								'conditions'=>array(
									"Sector.comuna_id"=>"14101"
								),
								'fields' => array('Sector.nombre','Sector.id'),
								'recursive' => -1
							)
				);
				$this->set("tipos",$tipos);
				$this->set("iglesias",$iglesias);
				$this->set("comunas",$comunas);
				$this->set("sectores",$sectores);
				
				$this->set("comunaGrupo",$comunaGrupo);
				$this->set("grupo",$grupo);
				$error = false;
				
				$html = $this->render("afx/nuevo");
			else:
				$mensaje = "El Grupo en cuestión no existe.";
			endif;	
		else:
			$mensaje = "El identificador de Grupos es inválido.";
		endif;	
		$response = array(
					"response"=>array(
						"error"=>$error,
						"showErrorThread"=>false,
						"type"=>"view", 
						"data"=>$html,
						"title"=>$title,
						"mensaje"=>$mensaje
					)
				);
		$this->outJson($response);
	}
	function loadFormAsignarMiembrosGrids(){
		if(!empty($_POST["id"]) && intval($_POST["id"])>0):
			$id = $_POST["id"];
			$grupo = $this->Grupo->find('first',array(
							'conditions'=>array(
								"Grupo.id"=>$id
							),
							'recursive' => -1
						)
			);
			$tipo = $this->Tipogrupo->find('first',array(
							'conditions'=>array(
								"Tipogrupo.id"=>$grupo["Grupo"]["tipogrupo_id"]
							),
							'recursive' => -1
						)
			);
			$mensaje = "";
			$title = "Asignar Miembros";
			$error = false;
			/*
			if($this->Grupo->esFinalizado($grupo)):
				$error = true;
				$title = "No se pude ingresar usuarios a este Grupo.";
				$mensaje = "El tiempo de ejecución del Grupo caducó en la siguiente fecha: ".$grupo["Grupo"]["fecha_termino"];
			endif;*/	
			if($grupo["Grupo"]["activo"] === "N"):
				$error = true;
				$mensaje = $mensaje."<br />El grupo esta desactivado.";	
			endif;
			$this->set("grupo",$grupo);
			$this->set("tipo",$tipo);
			$html = $this->render("afx/asignarMiembrosGrids");
			$response = array(
				"response"=>array(
					"error"=>$error,
					"errorThread"=>"",
					"errorTitle"=>"",
					"showErrorThread"=>true,
					"type"=>"view", 
					"data"=>$html,
					"title"=>$title,
					"mensaje"=>$mensaje
				)
			);
		else:
			$this->outJson(array(
				"response"=>array(
					"error"=>true,
					"errorThread"=>"",
					"errorTitle"=>"",
					"showErrorThread"=>false,
					"type"=>"view", 
					"data"=>"",
					"title"=>"Parámetros inválidos",
					"mensaje"=>"El Identificador de Grupo es inválido"
				)));
		endif;	
		$this->outJson($response);
	}
	function loadFormAsignarMiembro(){
		$puedeAsignar = false;
		$title = "Titulo Error";
		$mensaje = "Mensaje Error";
		$html ="";
		$error = true;
		if(!empty($_POST["uid"]) && intval($_POST["uid"])>0 && !empty($_POST["gid"]) && intval($_POST["gid"])>0):
			$uid = $_POST["uid"];
			$gid = $_POST["gid"];
			
			$grupo = $this->Grupo->find('first',array(
							'conditions'=>array(
								"Grupo.id"=>$gid,
								"Grupo.activo"=>"S"
							),
							'recursive' => -1
						)
			);
			$user = $this->User->find('first',array(
							'conditions'=>array(
								"User.id"=>$uid
							),
							'recursive' => -1
						)
			);
			if(!empty($grupo) && !empty($user)):
				$tipo = $this->Tipogrupo->find('first',array(
								'conditions'=>array(
									"Tipogrupo.id"=>$grupo["Grupo"]["tipogrupo_id"]
								),
								'recursive' => -1
							)
				);
				
				$existe = $this->Rol->find('all',array(
								'conditions'=>array(
									"Rol.user_id"=>$uid,
									"Rol.grupo_id"=>$gid
								),
								'recursive' => -1
							)
				);
				if( empty($existe)):
						$puedeAsignar = true;
				else:
					$mensaje = "El miembro que se quiere asignar ya existe en el grupo asociado.";
				endif;
                                $tiporoles = array();
				if($puedeAsignar):
					$tipoGrupo = $tipo["Tipogrupo"]["nombretipo"];
					//$rolesPermitidos = $this->rolesPermitidosParaGrupo[$tipoGrupo];

                                        $tmp = $this->Tiporol->find('all',array(
									'fields' => array('Tiporol.id','Tiporol.nombre'),
									'recursive' => -1
								)
						);
                                        $tiporoles=array();
					if(!empty($tmp)) $tiporoles = $tmp;

					$this->set("grupo",$grupo);
					$this->set("tipo",$tipo);
					$this->set("user",$user);
					$this->set("tiporoles",$tmp);
					$html = $this->render("afx/asignarMiembroForm");
					$error = false;
					$title = "Asignar Miembro";
					$mensaje = "Too ok papa";
				endif;	
			else://grupo invalido o inactivo || usuario invalido
				$mensaje = "El Grupo y/o el Usuario asignado son inválidos.";
			endif;	
		else://ids invalidos
			$mensaje = "Parámetros inválidos.";
		endif;
		$response = array(
			"response"=>array(
				"error"=>$error,
				"showErrorThread"=>false,
				"type"=>"view", 
				"data"=>$html,
				"title"=>$title,
				"mensaje"=>$mensaje
			)
		);	
		$this->outJson($response);
	}
	function loadFormEditarAsignarMiembro(){
		$puedeAsignar = false;
		$title = "Titulo Error";
		$mensaje = "Mensaje Error";
		$html ="";
		$error = true;
		if(!empty($_POST["uid"]) && intval($_POST["uid"])>0 && !empty($_POST["gid"]) && intval($_POST["gid"])>0):
			$uid = $_POST["uid"];
			$gid = $_POST["gid"];
			
			$grupo = $this->Grupo->find('first',array(
							'conditions'=>array(
								"Grupo.id"=>$gid,
								"Grupo.activo"=>"S"
							),
							'recursive' => -1
						)
			);
			$user = $this->User->find('first',array(
							'conditions'=>array(
								"User.id"=>$uid
							),
							'recursive' => -1
						)
			);
			if(!empty($grupo) && !empty($user)):
				$tipo = $this->Tipogrupo->find('first',array(
								'conditions'=>array(
									"Tipogrupo.id"=>$grupo["Grupo"]["tipogrupo_id"]
								),
								'recursive' => -1
							)
				);
				
				$rol = $this->Rol->find('first',array(
								'conditions'=>array(
									"Rol.user_id"=>$uid,
									"Rol.grupo_id"=>$gid
								),
								'recursive' => -1
							)
				);
				if(!empty($rol)):
					$tiporoles = array();
					$tipoGrupo =$tipo["Tipogrupo"]["nombretipo"];
                                        $tmp = $this->Tiporol->find('all',array(
                                                                'fields' => array('Tiporol.id','Tiporol.nombre'),
                                                                'recursive' => -1
                                                        )
                                        );
					$this->set("grupo",$grupo);
					$this->set("tipo",$tipo);
					$this->set("user",$user);
					$this->set("rol",$rol);
					$this->set("tiporoles",$tmp);
					$html = $this->render("afx/asignarMiembroForm");
					$error = false;
					$title = "Editar Asignación de Miembro a Grupo";
					$mensaje = "Too ok papa"; 
				endif;	
			else://grupo invalido o inactivo || usuario invalido
				$mensaje = "El Grupo y/o el Usuario asignado son inválidos.";
			endif;	
		else://ids invalidos
			$mensaje = "Parámetros inválidos.";
		endif;
		$response = array(
			"response"=>array(
				"error"=>$error,
				"showErrorThread"=>false,
				"type"=>"view", 
				"data"=>$html,
				"title"=>$title,
				"mensaje"=>$mensaje
			)
		);	
		$this->outJson($response);
	}
	function asignarMiembro(){
		$title = "Error en la Operación";
		$mensaje;
		$error = true;
		$errorValidacion = true;
		$invalidFields = "";
		$data="";
		$uid = $this->data["Rol"]["user_id"];
		$gid = $this->data["Rol"]["grupo_id"];
		$rid = $this->data["Rol"]["tiporol_id"];
		$accesoPermitido = false;
		
		$grupo = $this->Grupo->find('first',array(
						'conditions'=>array(
							"Grupo.id"=>$gid,
							"Grupo.activo"=>"S"
						),
						'recursive' => -1
					)
		);
		$user = $this->User->find('first',array(
						'conditions'=>array(
							"User.id"=>$uid
						),
						'recursive' => -1
					)
		);
		$userRol = $this->Tiporol->find('first',array(
						'conditions'=>array(
							"Tiporol.id"=>$rid
						),
						'recursive' => -1
					)
		);
		if(!empty($grupo) && !empty($user)):
			$tipo = $this->Tipogrupo->find('first',array(
							'conditions'=>array(
								"Tipogrupo.id"=>$grupo["Grupo"]["tipogrupo_id"]
							),
							'recursive' => -1
						)
			);
			$tipoGrupo =$tipo["Tipogrupo"]["nombretipo"]; 
			//$esProceso =$tipo["Tipogrupo"]["es_proceso"];
			$discipuloRol = $this->Tiporol->find('first',array(
							'conditions'=>array(
								"Tiporol.nombrerol"=>"discipulo"
							),
							'recursive' => -1
						)
			);
			
			$ayudanteRol = $this->Tiporol->find('first',array(
							'conditions'=>array(
								"Tiporol.nombrerol"=>"ayudante"
							),
							'recursive' => -1
						)
			);
			$liderRol = $this->Tiporol->find('first',array(
							'conditions'=>array(
								"Tiporol.nombrerol"=>"lider"
							),
							'recursive' => -1
						)
			);
			/*numero de discipulos de la celula*/
			$nDiscipulos = $this->Rol->find('count',array(
							'conditions'=>array(
								"Rol.grupo_id"=>$gid,
								"Rol.tiporol_id"=>$discipuloRol["Tiporol"]["id"]
							),
							'recursive' => -1
						)
			);
			/*numero de lideres de grupo*/
			$nLideres = $this->Rol->find('count',array(
							'conditions'=>array(
								"Rol.grupo_id"=>$gid,
								"Rol.tiporol_id"=>$liderRol["Tiporol"]["id"]
							),
							'recursive' => -1
						)
			);
			/*numero de asistentes de grupo*/
			$nAyudantes = $this->Rol->find('count',array(
							'conditions'=>array(
								"Rol.grupo_id"=>$gid,
								"Rol.tiporol_id"=>$ayudanteRol["Tiporol"]["id"]
							),
							'recursive' => -1
						)
			);
			/*verificaion si ya existe el usuario en el grupo*/
			$tmp=array();
			if(!empty($this->data["Rol"]["id"])):
				$tmp = $this->Rol->find('first',array(
							'conditions'=>array(
								"Rol.id"=>$this->data["Rol"]["id"],
							),
							'recursive' => -1
						)
				);
			endif;	
			$existe = $this->Rol->find('first',array(
							'conditions'=>array(
								"Rol.user_id"=>$uid,
								"Rol.grupo_id"=>$gid
							),
							'recursive' => -1
						)
			);
			$editar = false;
			if( empty($existe) || !empty($tmp)):
                                $accesoPermitido = true;
				/*$rolesGrupo = $this->rolesPermitidosParaGrupo[$tipoGrupo]["tipoMiembros"];
				$rolUser = $userRol["Tiporol"]["nombrerol"];//rol que se quiere asignar
				$rolPermitido = false;
				foreach($rolesGrupo as $rp):
					if($rolUser === $rp):
						$rolPermitido = true;
						break;
					endif;	
				endforeach;
				if($rolPermitido):
					$configNLideres = $this->rolesPermitidosParaGrupo[$tipoGrupo]["nLideres"];
					$configNAyuda = $this->rolesPermitidosParaGrupo[$tipoGrupo]["nAyudantes"];//n asist. permitidos	
					$configNDiscipulos = $this->rolesPermitidosParaGrupo[$tipoGrupo]["nMiembros"];//n miembros. permitidos
	
					
					
					if($rolUser == "lider"):
						if($nLideres<$configNLideres || $configNLideres == "*"):
							$accesoPermitido = true;
						else:
							$mensaje = "El número de Lideres por ".$tipoGrupo." debe ser menor o igual ".$configNLideres;
						endif;
					elseif($rp == "ayudante"):
						if($nAyudantes < $configNAyuda || $configNAyuda == "*"):
							$accesoPermitido = true;
						else:
							$mensaje = "El número de Asistentes por ".$tipoGrupo." debe ser menor o igual a ".$configNAyuda;
						endif;
					elseif($rp == "discipulos"):
						if($nDiscipulos<$configNDiscipulos || $configNDiscipulos =="*"):
							$accesoPermitido = true;
						else:
							$mensaje = "Un grupo de tipo ".$tipoGrupo." solo puede poseer ".$configNDiscipulos." ".$discipuloRol["Tiporol"]["nombre"];
						endif;
					else:	
						$accesoPermitido = true;
					endif;
				else:
					$accesoPermitido = false;
					$mensaje = "Este Grupo solo admite usuarios con Rol: <strong>".implode(",", $rolesGrupo)."</strong>";
				endif;*/
				if($accesoPermitido):
					if($this->Rol->save($this->data)):
						$error = false;
						$title = "Operación Exitosa";
						$mensaje = "El miembro ha sido asignado al Grupo";
						$data = $this->Rol->id;
					else:
						$invalidFields = $this->Rol->invalidFields();
					endif;
				else:
					if(empty($mensaje))
						$mensaje = "Error en la asignación, revise el Rol asociado y el proceso que posee el usuario a isncribir.<ul><li>El Grupo asociado solo permite los siguientes Roles ".$tmpRoles.".</li><li>El usuario solo admite los siguientes Roles ".$tmpRoles2."</li>";		
				endif;
			else:	
				
				$mensaje = "El usuario ya es miembro del grupo.";
			endif;	
		else://grupo user invalido
			$mensaje = "El Grupo y/o el Usuario asignados son inválidos.";
		endif;	
		$response = array(
			"response"=>array(
				"error"=>$error,
				"showErrorThread"=>false,
				"type"=>"result", 
				"data"=>$data,
				"title"=>$title,
				"mensaje"=>$mensaje,
				"invalidFields"=>$invalidFields
			)
		);
		$this->outJson($response);
	}
	function loadGridMiembrosGrupo(){
		$this->autoRender = false;
		$gid = -1; //grupo id
		if(!empty($_POST['gid']))
			$gid = $_POST['gid'];
		if(!empty($_POST['page']))
			$page = $_POST['page'];
		else	$page = 1;

		if(!empty($_POST['rp']))
			$rp = $_POST['rp'];
		else	$rp = 10;

		$start = (($page-1) * $rp);
		$limit = $start. ", ". $rp;

		if(!empty($_POST['sortname'])):
			$sortname = $_POST['sortname'];
			$sortorder = " " . $_POST['sortorder'];
		else:
			$sortname = 'user.apellido1';
			$sortorder = " desc ";
		endif;
		$likecondicion = "";
		if(!empty($_POST['query'])):
			$query = $_POST['query'];
			$qtype = $_POST['qtype'];
			$likecondicion = "{$qtype} LIKE '%{$query}%'";
		else:	
			$query = null;
			$qtype = "apellido1";
		endif;	

		$orden = $sortname . $sortorder;
		$id = 0;
		$elements="";
		
		$uids = $this->Rol->find('all',array(
							'conditions'=>array(
								"Rol.grupo_id"=>$gid
							),
							'recursive' => -1
						)
		);
		$count = count($uids);
		$users = $this->User->getUsersByGrupo($orden,$limit,$likecondicion,$gid);
		$data = array();	
		if(!empty($users)):
			foreach($users as $user):
				$elements[] = array(
					"id"	=>	$user["user"]["id"],
					"cell"	=>	array(
									$user["user"]["id"],
									$user["tiporol"]["nombre"],
									$user["user"]["nombre1"],
									$user["user"]["nombre2"],
									$user["user"]["apellido1"],
									$user["user"]["apellido2"],
									$user["user"]["proceso"],
									$user["user"]["fono_fijo"],
									$user["user"]["fono_movil"],
									$user["user"]["email"],
									$user["user"]["created"]
								)
					);
			endforeach;
			$data = array('page'	=>	$page,'total'	=>	$count,'rows'	=>	$elements);			
		else:
			$data =array('page'	=>	$page,
						'total'	=>	'0',
						'rows'	=>	array(
									"id"	=>	'0',
									"cell"	=>	array('-','-','-','-','-')
								)
					);		
		endif;
		$this->outJson($data);
	}
	function save(){
		$title = "Error en la Operación";
		$mensaje = "No se pudo guardar el Grupo, revise los siguientes campos.";
		$error = true;
		$invalidFields = "";
		$data="";
		
		if(empty($this->data["Grupo"]["id"])):
			if($this->Grupo->save($this->data)):
				$error = false;
				$title = "Operación Exitosa";
				$mensaje = "El nuevo Grupo ha sido creado con éxito";
				$data = $this->Grupo->id;
			else:
				$invalidFields = $this->Grupo->invalidFields();
			endif;
		else:
			$id = $this->data["Grupo"]["id"];
			$grupo = $this->Grupo->find('first',array(
								'conditions'=>array(
									"Grupo.id"=>$id
								),
								'recursive' => -1
							)
			);
			if(!empty($grupo)):
				if($this->Grupo->save($this->data)):
					$error = false;
					$title = "Operación Exitosa";
					$mensaje = "El Grupo ha sido modificado con éxito";
					$data = $this->Grupo->id;
				else:
					$invalidFields = $this->Grupo->invalidFields();
				endif;
			else:
				$mensaje = "El Grupo a modificar no existe.";
			endif;
		endif;
		$response = array(
			"response"=>array(
				"error"=>$error,
				"showErrorThread"=>false,
				"type"=>"result", 
				"data"=>$data,
				"title"=>$title,
				"mensaje"=>$mensaje,
				"invalidFields"=>$invalidFields
			)
		);
		$this->outJson($response);
	}
	function del(){
		$title = "Error en la Operación";
		$mensaje = "No se pudo eliminar el Grupo, revise los siguientes campos.";
		$error = true;
		$invalidFields = "";
		$data="";
		if(!empty($_POST["id"]) && intval($_POST["id"])>0):
			$id = $_POST["id"];
			$grupo = $this->Grupo->find('first',array(
								'conditions'=>array(
									"Grupo.id"=>$id
								),
								'recursive' => -1
							)
			);
			if(!empty($grupo)):
				if($this->Grupo->delete($id,true)):
					$error = false;
					$title = "Operación Exitosa";
					$mensaje = "El Grupo ha sido eliminado con éxito";
				else:
					$invalidFields = $this->Grupo->invalidFields();
				endif;
			else:
				$mensaje = "El Grupo en cuestión no existe.";
			endif;	
		else:
			$mensaje = "El identificador de Grupo no es válido";
		endif;	
		$response = array(
				"response"=>array(
					"error"=>$error,
					"showErrorThread"=>false,
					"type"=>"result", 
					"title"=>$title,
					"mensaje"=>$mensaje,
					"invalidFields"=>$invalidFields
				)
			);
		$this->outJson($response);
	}
	function removerMiembro(){
		$title = "Error en la Operación";
		$mensaje = "No se pudo remover el Usuario del Grupo, revise los siguientes campos.";
		$error = true;
		$invalidFields = "";
		$data="";
		if(!empty($_POST["gid"]) && intval($_POST["gid"])>0 && !empty($_POST["uid"]) && intval($_POST["uid"])>0):
			$gid = $_POST["gid"];
			$uid = $_POST["uid"];
			$rol = $this->Rol->find('first',array(
								'conditions'=>array(
									"Rol.user_id"=>$uid,
									"Rol.grupo_id"=>$gid
								),
								'recursive' => -1
							)
			);
			if(!empty($rol)):
				if($this->Rol->delete($rol["Rol"]["id"],false)):
					$error = false;
					$title = "Operación Exitosa";
					$mensaje = "El Usuario ha sido removido del Grupo con éxito";
				else:
					$invalidFields = $this->Rol->invalidFields();
				endif;
			else:
				$mensaje = "El Usuario no esta asignado al Grupo, verifique los datos de ambos items.";
			endif;	
		else:
			$mensaje = "El identificador de Grupo no es válido";
		endif;	
		$response = array(
				"response"=>array(
					"error"=>$error,
					"showErrorThread"=>false,
					"type"=>"result", 
					"title"=>$title,
					"mensaje"=>$mensaje,
					"invalidFields"=>$invalidFields
				)
			);
		$this->outJson($response);
	}
}
?>